package br.com.sisgerenciamento.dao.produto;

import java.util.ArrayList;
import java.util.List;

import br.com.sisgerenciamento.dto.produto.ProdutoDTO;
import br.com.sisgerenciamento.exceptions.AlterarException;
import br.com.sisgerenciamento.exceptions.ApplicationException;
import br.com.sisgerenciamento.exceptions.ExcluirException;
import br.com.sisgerenciamento.exceptions.InserirException;
import br.com.sisgerenciamento.model.produto.ProdutoVO;
import br.com.sisgerenciamento.model.unidade.UnidadeProdutoVO;

public interface ProdutoDAOService{

	ProdutoVO inserir( ProdutoVO vo ) throws InserirException;

	ProdutoVO obterProdutoPorCodigo( Long codigo ) throws ApplicationException;

	List< UnidadeProdutoVO > listarUnidades() throws ApplicationException;

	List< String > consultarPorDescricao( String descricao ) throws ApplicationException;

	List< ProdutoVO > consultarProdutoPorDescricao( String descricao ) throws ApplicationException;

	void alterar( ProdutoVO vo ) throws AlterarException;

	void excluir( ProdutoVO vo ) throws ExcluirException;

	ArrayList< ProdutoVO > listarAtivos() throws ApplicationException;

	ArrayList< ProdutoVO > listar() throws ApplicationException;

	ArrayList< ProdutoDTO > listarProdutosProntaEntrega() throws ApplicationException;

	ArrayList< ProdutoDTO > consultarProdutoProntaEntregaPorDescricao( String descricao ) throws ApplicationException;
}
